Closed
Fix failing unit (linux) GitHub Actions job by aligning outdated test fixtures and expectations#28
Conversation
Agent-Logs-Url: https://github.com/LeXwDeX/opencode/sessions/b2025709-2e09-46e3-97bb-52e89ae18b76 Co-authored-by: LeXwDeX <14139451+LeXwDeX@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix failing GitHub Actions job 'release'
Normalize fork-release version input before creating GitHub release tags
May 22, 2026
Copilot stopped work on behalf of
LeXwDeX due to an error
May 22, 2026 18:15
Agent-Logs-Url: https://github.com/LeXwDeX/opencode/sessions/4d8c834d-7514-4788-a0aa-f38339ab2654 Co-authored-by: LeXwDeX <14139451+LeXwDeX@users.noreply.github.com>
Contributor
Author
|
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Copilot
AI
changed the title
Normalize fork-release version input before creating GitHub release tags
Fix failing unit (linux) GitHub Actions job by aligning outdated test fixtures and expectations
May 22, 2026
LeXwDeX
pushed a commit
that referenced
this pull request
Jun 7, 2026
…tions + AGPL policy + /dag-worker rename + YAML schema alignment
Consolidated documentation work package combining 5 related changes.
## 1. Multilingual README system (17 languages total)
Translated README.md (zh-Hans primary) into 16 additional languages
using DeepSeek V4 Pro (higher quality than the prior Google Translate
baseline):
- AR (العربية) / BR (Português Brasil) / BS (Bosanski)
- DA (Dansk) / DE (Deutsch) / ES (Español)
- FR (Français) / JA (日本語) / KO (한국어)
- NO (Norsk) / PL (Polski) / RU (Русский)
- TH (ไทย) / TR (Türkçe) / UK (Українська)
Each translation contains:
- Top bilingual switch block linking all 17 languages (current bolded)
- Machine-translation notice banner
- Full translation preserving markdown structure, code fences,
emojis, and technical term literals (opencode, DAG, MIT, AGPL,
LLM, TUI, CJK, IME, SPDX, SaaS, REST, MCP etc.)
- CJK scripts preserve native characters (no romanization)
- UK file excludes Russian-only letters (ы/э/ё) to avoid confusion
- TH file preserves Thai script with natural no-space word breaks
- TR file correctly uses all 6 Turkish special letters (ç/ğ/ı/ş/ö/ü)
- Each file > 10K bytes
ZHT (繁體中文) removed per user decision (simplified Chinese primary
README is considered sufficient for Chinese-speaking users).
## 2. README.md / README_EN.md content expansion
Added 4 new feature sections highlighting self-developed enhancements:
- 🧩 DAG HARNESS 编排任务系统 (AGPL-3.0) — self-developed DAG
workflow engine, capability list, docs cross-links
- 🪝 HOOKS API 超集实现 — 22 runtime events × 5 execution types
with stdin/stdout JSON envelope protocol, DAG event bus
integration notes
- 🛡️ 轻量级 CODING 隔离空间 — Sandbox + Worktree dual-track
isolation for safe code trial runs without polluting real repo
(Sandbox tool ephemeral + DAG Worktree manager auto branch
allocation per parallel node)
- 🔧 中文特性 DEBUG — CJK tokenization / fullwidth punctuation /
Chinese paths / IME interaction fixes
- 🔬 其他小型 DEBUG — back-ported 6 upstream fixes with git commit
references (564cde3 paste corruption, 1124315 paste layout
refresh, fe143df clipboard fallback, e94aeca paste badge
contrast, CJK width estimation, IME jitter)
Added feature summary table at top of the section (5 rows).
### 🔒 AGPL v3 Mandatory License Declaration
New section explicitly stating the fork author's licensing policy:
- Self-authored code MUST use GNU AGPL v3+
- AGPL copyleft requirements on derivative works
- SaaS forced-open-source clause (§13)
- Attribution preservation
- ⚖️ rationale blockquote (AGPL prevents closed-source SaaS
exploitation of open-source community)
### Strengthened upstream disclaimers
Relationship section extended:
- ❌ OpenCode official team does not provide any support, warranty
or endorsement for this fork (per upstream README attribution
requirements)
## 3. Slash command rename: /dagworker → /dag-worker
Align with /dag-ctl's kebab-case convention (强迫症 fix):
- packages/opencode/src/command/index.ts: DAGWORKER: "dag-worker"
(command id) + import ./template/dag-worker.txt
- packages/opencode/src/command/template/dagworker.txt →
dag-worker.txt (file rename + content rewrite in §4 below)
- Cross-references updated in:
- docs/harness-dag.md (1 occurrence)
- packages/opencode/src/command/template/dag-ctl.txt (2 occurrences)
- docs/dag/OVERVIEW.md (9 occurrences + 1 template path reference)
- docs/design/007-dag-session-integration.md (7 occurrences)
- docs/design/008-tui-dag-integration.md (4 occurrences)
- All 17 READMEs (3 occurrences each: DAG Harness entry table +
feature detail + /dag-ctl cross-reference)
Tool id "dagworker" and tool files dagworker.ts / dagworker.txt
NOT renamed — those are the LLM-callable tool artifacts, not slash
commands. Tool-name references in session/system.ts:100
("dagworker status <workflowId>") intentionally left unchanged
because it's the LLM tool invocation, not a slash command.
## 4. dag-worker.txt YAML examples rewritten
The original 6 YAML examples in dag-worker.txt used fictional
schema fields (branches/status/transition_to/task/from_status/
to_status/transition) that did NOT match the actual DAGConfig /
DAGNodeConfig TypeScript interfaces. Replaced with examples that
strictly match real schema fields (name/max_concurrency/nodes/id/
name/dependencies/required/worker_type/worker_config) and each
demonstrates a real DAG rule:
| # | Scenario | Legality | Rule demonstrated |
|---|----------|----------|-------------------|
| 1 | Linear A→B→C chain | ✅ valid | basic DAG structure |
| 2 | Diamond A→(B,C)→D fan-in/out | ✅ valid | parallel scheduling +
max_concurrency |
| 3 | Cycle A→B→A | ❌ invalid | detectCycle rejection
(workflow-engine.ts:287-303) |
| 4 | Dangling dependency ref | ❌ invalid | reference-existence check
(workflow-engine.ts:207-211) |
| 5 | required + optional mixed | ✅ valid | terminal convergence
(workflow-engine.ts:553-575) + workflow status semantic |
| 6 | Duplicate node id in same workflow | ❌ invalid | ID uniqueness
(workflow-engine.ts:206) |
Validate operation list rewritten (dag-worker.txt L34-43) to match
actual RequiredNodesValidator + validateReplanPostConfig logic:
- node.id uniqueness (RequiredNodesValidator L28 + validateReplanPostConfig L206)
- dependencies reference existence (validateReplanPostConfig L207-211)
- cycle detection via detectCycle (L287-303)
- max_concurrency positive integer (validateReplanPostConfig L203-204)
- required node rationality: required node cannot only depend on
optional nodes (warn, not error) (RequiredNodesValidator L47-49)
- required node non-deletable (validateReplanPostConfig L220-226)
- node count upper bound (validateReplanPostConfig L200-201)
- timeout (>0) + retry (>=0) integer sanity (DAGNodeConfig:72-77)
Fictional validators removed: required_nodes completeness (replaced
by node-level required boolean), max_agents limit, max_pushes
limit, shadow route termination, fallback chain cycle check,
worktree isolation policy check, merge strategy compatibility.
SYSTEM.yaml reference (dag-worker.txt L3) deleted entirely — this
file does not exist in the repo; iron law #22 / #28 also do not
exist. Replaced with: "comply with DAG four-principle iron laws
(state machine cannot be bypassed; terminal states irreversible;
events must broadcast; persist-first) — see AGENTS.md".
Configuration format note updated to clarify: YAML serves as
external human-readable declaration format (users may prefer it);
dagworker tool internally takes JSON input (params.workflow:
Schema.String, JSON-parsed inside tool). No YAML→JSON converter
shipped in this commit — documented as known deviation from
design doc intent in docs/dag/OVERVIEW.md (still references YAML
pipeline).
## 5. ZHT language removed
README_ZHT.md deleted. All 17 remaining READMEs' bilingual switch
blocks updated (18 → 17 languages). User decision: simplified
Chinese primary README is sufficient for Chinese-speaking readers.
## Notes
Typecheck: 0 errors.
Session tests: 146 pass / 0 fail / 304 expect() calls.
No production runtime behavior changes (all changes are either in
prompt/template text files, slash command id strings, markdown docs,
or static YAML examples in a template).
The /dag-worker rename does not affect the dagworker tool id (used
by LLMs to invoke the tool directly) — only the slash command
entry point changes.
Upstream attribution preserved: upstream opencode team (sst /
anomalyco) retains MIT copyright on all upstream code; this fork is
independent community enhancement per upstream README's explicit
attribution requirement.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue for this PR
The
unit (linux)workflow job was failing in CI due to test expectations and recorded fixtures being out of sync with current behavior.Type of change
What does this PR do?
This updates failing tests/fixtures after analyzing the failing Actions run (
run_id=26304086564,job_id=77436319443).Changes made:
system.contentas content parts).Why this works:
How did you verify your code works?
ghostty-web, HTTP 403).Screenshots / recordings
If this is a UI change, please include a screenshot or recording.
No UI changes.
Checklist
If you do not follow this template your PR will be automatically rejected.